//
//  ILEventModel.h
//  IMILabKit
//
//  Created by Roffa Zhou on 2022/6/14.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSInteger , ILEventType) {
    
     ///下面值不能随便动，目前 android/ios/web 统一保持一致
 
    ///对应后台字段 click
    ILEventTypeClick =0,  //app 点击类型，例如用户点击按钮。 产品使用
    /// 对应后台字段 monitor
    ILEventTypeMoitor=1 ,//默认 APP 事件类型，一般用户排查分析app 稳定性，某一功能的成功率
    /// 对应后台字段 crash
    ILEventTypeCrash=2 ,//app崩溃信息 ，研发使用。主要针对rn错误上报
   ///  对应后台字段userAction
    ILEventTypeUserAction=4 ,//耗时 用户行为监控:页面停留时长、进出进入某些页面等。

};

@interface ILEventBaseModel : NSObject
@property (nonatomic , copy)NSString * _Nullable userOS;  //默认取值自ILEventReportCfg中的全局属性‘iOS’，如此条需要特殊设置，用此值赋值
@end

@interface ILEventModel : ILEventBaseModel
/// 事件类型
@property (nonatomic , assign)ILEventType eventType;

/// 事件唯一标识  必传
@property (nonatomic , copy)NSString *keyName;

/* 存放一些特殊额外数据，用于查看，这里面的信息不用于脚本自动分析。
 如
 {
     "errorMessage":"登录失败",
 }
 当Click:
 viewReference：view显示的text，按需传入
 window：当前view所在页面，按需传入
 {
     "viewReference":"登录",
     "window":"MainActivity or MainVC"
 }
 */
@property (nonatomic , strong)NSDictionary * _Nullable extra;

/// 设备pk
@property(nonatomic, strong)NSString * _Nullable model;
/// 设备的iotid
@property(nonatomic, strong)NSString * _Nullable did;
/// 耗时(毫秒)  eventType = ILEventTypeTime时使用
@property (nonatomic , assign)NSInteger takeTime;

/// 是否插件打点
@property (nonatomic , assign)BOOL isPlugin;

//一些需要统计的数据内容
@property (nonatomic , copy)NSString * _Nullable data;
//一些需要统计的数据内容, 错误码或状态码。 eventType = ILEventTypeDefault时使用
@property (nonatomic , copy)NSString * _Nullable code;

@end

NS_ASSUME_NONNULL_END
